home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / GameKit / Headers / gamekit / GKSound.h < prev    next >
Text File  |  1995-06-12  |  2KB  |  49 lines

  1.  
  2. // A GKSound adds a single function to the Sound object:  It won't
  3. // allow itself to be played "too much".  It know when it was last
  4. // played and if you attempt to play it too soon after, it ignores
  5. // the playback message.  Also, you tell it which GKSoundStream to
  6. // play back on.  Because of this special playback method, it breaks
  7. // all the delegate methods of the play notification.  (I can't use
  8. // super's -play: since I am completely overriding what it does...
  9. // if I had source to the Sound object, I suppose that I could re-
  10. //implement what super does, but the object as is can't be subclassed
  11. // the way I need and still retain it's old functionality.  I blame
  12. // NeXT for this, as it seems to be a poor design that doesn't allow
  13. // proper subclassing+retaining functionality.)
  14. //
  15. // This object will convert itself to 16-bit linear 22050 kHz after
  16. // load and init so that it will work on the NXSoundStreams.  If you
  17. // edit (and fragment) the sound, be sure to compact it before playing!
  18. // if you change the sound's length in any way via editing, you should
  19. // be sure to set up the time/percent again, as they aren't changed
  20. // due to edits.  This is because (1) you should only change it if
  21. // you're going by percent, and you may be going by absolute playback
  22. // time, and I don't track which you used to set it up (easy to overcome)
  23. // and (2) there's tons of ways to alter a sound and I didn't feel
  24. // like overriding every method since games seldom edit their sounds!
  25.  
  26. #import <appkit/appkit.h>
  27. #import <soundkit/soundkit.h>
  28.  
  29. @interface GKSound:Sound
  30. {
  31.     id nextPlay;    // A DAYTime that estimates when sound OK to play again
  32.     id streamGroup;    // The GKSoundStream which we use for playback
  33.     id timeToPlay;    // how much of the sound can be unplayed and
  34.                     // still allow us to play it again (DAYTime)
  35.     id now;            // DAYTime used to hold current time; we keep it
  36.                     // around so that we aren't constantly alloc'ing it
  37.                     // since dynamic allocation is expensive timewise.
  38. }
  39.  
  40. - setPercentToPlay:(double)percent; // how much to play before next play
  41.                                     // percent is in range [0,1].
  42. - setTimeToPlay:aTime;        // how long to play sound before next play
  43. - setPlayStream:aStream;    // a GKSoundStream for playback
  44. - convert;                    // attempt conversion to 16bit 22.05kHz mono sound
  45.  
  46. - _initGKSound;                // private method to set up ivars
  47.  
  48. @end
  49.